﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Quiz.LINQData;

namespace Quiz
{
    /// <summary>
    /// Interaktionslogik für FrageHinzufuegen.xaml
    /// </summary>
    public partial class FrageHinzufuegen : Window, IDisposable
    {
       
        private DataBase _db;
        private Frage _frage;

        /// <summary>
        /// Hinzufügen einer neuen Frage zum Projekt
        /// </summary>
        public FrageHinzufuegen()
        {
            InitializeComponent();
            _db = new DataBase();
            _frage = new Frage();
            this.DataContext = _db;
        }

        /// <summary>
        /// Fügt dem Quiz eine neue Frage hinzu.
        /// </summary>
        private void NeueFrageHinzufuegen()
        {
            Boolean hasError = false;
            //Prüfen ob auch alle relevanten Felder ausgefüllt wurden.
            if (uxFrageTextTb.Text.Trim().Length == 0)
            {
                hasError = true;
            }

            if (uxAntwort1Tb.Text.Trim().Length == 0)
            {
                hasError = true;
            }

            if (uxAntwort2Tb.Text.Trim().Length == 0)
            {
                hasError = true;
            }

            if (uxAntwort3Tb.Text.Trim().Length == 0)
            {
                hasError = true;
            }


            if (hasError)
            {
                MessageBox.Show("Bitte alle Felder die mit einem * gekennzeichnet sind ausfüllen");
            }
                else
            {
                //Prüfen ob eine Fragen neu angelegt werden soll.
                if (_frage.FrageID == 0)
                {

                    //Beim hinzufügen von Datensätzen muss aufgepasst werden das auch alle Abhängigkeiten beachtet werden.
                    List<Antwort> antworten = new List<Antwort>();

                    Antwort antwort = new Antwort();
                    antwort.Antworttext = uxAntwort1Tb.Text;
                    antwort.Richtig = uxAntwort1Rb.IsChecked.Value;
                    antworten.Add(antwort);

                    antwort = new Antwort();
                    antwort.Antworttext = uxAntwort2Tb.Text;
                    antwort.Richtig = uxAntwort2Rb.IsChecked.Value;
                    antworten.Add(antwort);

                    antwort = new Antwort();
                    antwort.Antworttext = uxAntwort3Tb.Text;
                    antwort.Richtig = uxAntwort3Rb.IsChecked.Value;
                    antworten.Add(antwort);

                    _db.FrageHinzufuegenKomplett(System.Environment.UserName, uxFrageTextTb.Text, (Kategorie)uxKategorieKb.SelectedItem, antworten);
                }
            }
        }


        private void uxSpeichernBtn_Click(object sender, RoutedEventArgs e)
        {
            NeueFrageHinzufuegen();
            this.Close();
        }

        private void uxSpeichernUndHinzufuegenBtn_Click(object sender, RoutedEventArgs e)
        {
            NeueFrageHinzufuegen();
            _frage = new Frage();

            //Alle Eingabefelder "löschen" zurücksetzten
            uxKategorieKb.SelectedIndex = 0;
            uxFrageTextTb.Text = string.Empty;
            uxAntwort1Tb.Text = string.Empty;
            uxAntwort2Tb.Text = string.Empty;
            uxAntwort3Tb.Text = string.Empty;
            uxAntwort1Rb.IsChecked = true;
        }

        private void uxAbbrechenBtn_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        /// <summary>
        /// Die Datenbank Klasse verwerfen.
        /// </summary>
        void IDisposable.Dispose()
        {
            _db.Dispose();
        }
    }
}
